/**
 * 开发环境 前端对后端的服务代理
 * 
 * 为什么需要这个文件？
 * 1.修改频繁，独立维护
 * 2.多模块代理复杂，独立维护
 * 
 */
import type { ProxyOptions } from 'vite';

type ProxyTargetList = Record<string, ProxyOptions>;

const httpsRE = /^https:\/\//;

/**
 * 使用https代理时,加上secure=true配置
 */
export default function createProxy(env: ImportMetaEnv): ProxyTargetList {
  return {
    //【主服务 api】
    [env.VITE_API_BASEPATH]: {
      target: env.VITE_PROXY_TARGET_MAIN,
      changeOrigin: true,
      ws: true,
      rewrite: (path) => path.replace(new RegExp(`^${env.VITE_API_BASEPATH}`), ''),
      // df-独有socks5支持
      headers: {
        'Connection': 'keep-alive'
      },
    },
    //【主服务 websocket】
    [env.VITE_WSAPI_BASEPATH]: {
      target: env.VITE_PROXY_TARGET_MAIN,
      changeOrigin: true,
      ws: true,
      rewrite: (path) => path.replace(new RegExp(`^${env.VITE_WSAPI_BASEPATH}`), ''),
    },
    // 【主服务 基础设施 swaager文档】
    ['/v3/api-docs']: {
      target: env.VITE_PROXY_TARGET_MAIN,
      changeOrigin: true,
    },
  };
}
